# Copyright lowRISC contributors (OpenTitan project).
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0

package(default_visibility = ["//visibility:public"])

cc_library(
    name = "base",
    srcs = ["dif_base.c"],
    hdrs = ["dif_base.h"],
    deps = [
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:multibits",
        "//sw/device/lib/base/internal:status",
    ],
)

cc_library(
    name = "test_base",
    testonly = True,
    hdrs = ["dif_test_base.h"],
    deps = [
        ":base",
        "@googletest//:gtest",
    ],
)

cc_library(
    name = "adc_ctrl",
    srcs = [
        "autogen/dif_adc_ctrl_autogen.c",
        "autogen/dif_adc_ctrl_autogen.h",
        "dif_adc_ctrl.c",
    ],
    hdrs = [
        "dif_adc_ctrl.h",
    ],
    deps = [
        ":base",
        "//hw/ip/adc_ctrl/data:adc_ctrl_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
        "//sw/device/lib/runtime:hart",
    ],
)

cc_test(
    name = "adc_ctrl_unittest",
    srcs = [
        "autogen/dif_adc_ctrl_autogen_unittest.cc",
        "dif_adc_ctrl_unittest.cc",
    ],
    deps = [
        ":adc_ctrl",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "aes",
    srcs = [
        "autogen/dif_aes_autogen.c",
        "autogen/dif_aes_autogen.h",
        "dif_aes.c",
    ],
    hdrs = [
        "dif_aes.h",
    ],
    deps = [
        ":base",
        "//hw/ip/aes/data:aes_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "aes_unittest",
    srcs = [
        "autogen/dif_aes_autogen_unittest.cc",
        "dif_aes_unittest.cc",
    ],
    deps = [
        ":aes",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "alert_handler",
    srcs = [
        "autogen/dif_alert_handler_autogen.c",
        "autogen/dif_alert_handler_autogen.h",
        "dif_alert_handler.c",
    ],
    hdrs = [
        "dif_alert_handler.h",
    ],
    deps = [
        ":base",
        "//hw/top_earlgrey:alert_handler_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "alert_handler_unittest",
    srcs = [
        "autogen/dif_alert_handler_autogen_unittest.cc",
        "dif_alert_handler_unittest.cc",
    ],
    deps = [
        ":alert_handler",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "aon_timer",
    srcs = [
        "autogen/dif_aon_timer_autogen.c",
        "autogen/dif_aon_timer_autogen.h",
        "dif_aon_timer.c",
    ],
    hdrs = [
        "dif_aon_timer.h",
    ],
    deps = [
        ":base",
        "//hw/ip/aon_timer/data:aon_timer_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "aon_timer_unittest",
    srcs = [
        "autogen/dif_aon_timer_autogen_unittest.cc",
        "dif_aon_timer_unittest.cc",
    ],
    deps = [
        ":aon_timer",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "clkmgr",
    srcs = [
        "autogen/dif_clkmgr_autogen.c",
        "autogen/dif_clkmgr_autogen.h",
        "dif_clkmgr.c",
    ],
    hdrs = ["dif_clkmgr.h"],
    deps = [
        ":base",
        "//hw/top_earlgrey/ip_autogen/clkmgr:clkmgr_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "clkmgr_unittest",
    srcs = [
        "autogen/dif_clkmgr_autogen_unittest.cc",
        "dif_clkmgr_unittest.cc",
    ],
    deps = [
        ":clkmgr",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "csrng_shared",
    srcs = [
        "autogen/dif_csrng_autogen.h",
        "dif_csrng_shared.c",
    ],
    hdrs = [
        "dif_csrng.h",
        "dif_csrng_shared.h",
    ],
    deps = [
        ":base",
        "//hw/ip/csrng/data:csrng_c_regs",
        "//hw/ip/edn/data:edn_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_library(
    name = "csrng",
    srcs = [
        "autogen/dif_csrng_autogen.c",
        "autogen/dif_csrng_autogen.h",
        "dif_csrng.c",
    ],
    hdrs = [
        "dif_csrng.h",
    ],
    deps = [
        ":base",
        ":csrng_shared",
        "//hw/ip/csrng/data:csrng_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "csrng_unittest",
    srcs = [
        "autogen/dif_csrng_autogen_unittest.cc",
        "dif_csrng_unittest.cc",
    ],
    deps = [
        ":csrng",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "dma",
    srcs = [
        "autogen/dif_dma_autogen.c",
        "autogen/dif_dma_autogen.h",
        "dif_dma.c",
    ],
    hdrs = [
        "dif_dma.h",
    ],
    deps = [
        ":base",
        "//hw/ip/dma/data:dma_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "dma_unittest",
    srcs = [
        "autogen/dif_dma_autogen_unittest.cc",
        "dif_dma_unittest.cc",
    ],
    deps = [
        ":dma",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "edn",
    srcs = [
        "autogen/dif_edn_autogen.c",
        "autogen/dif_edn_autogen.h",
        "dif_edn.c",
    ],
    hdrs = [
        "dif_edn.h",
    ],
    deps = [
        ":base",
        ":csrng_shared",
        "//hw/ip/edn/data:edn_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "edn_unittest",
    srcs = [
        "autogen/dif_edn_autogen_unittest.cc",
        "dif_edn_unittest.cc",
    ],
    deps = [
        ":edn",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "entropy_src",
    srcs = [
        "autogen/dif_entropy_src_autogen.c",
        "autogen/dif_entropy_src_autogen.h",
        "dif_entropy_src.c",
    ],
    hdrs = [
        "dif_entropy_src.h",
    ],
    deps = [
        ":base",
        "//hw/ip/entropy_src/data:entropy_src_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "entropy_src_unittest",
    srcs = [
        "autogen/dif_entropy_src_autogen_unittest.cc",
        "dif_entropy_src_unittest.cc",
    ],
    deps = [
        ":entropy_src",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "flash_ctrl",
    srcs = [
        "autogen/dif_flash_ctrl_autogen.c",
        "autogen/dif_flash_ctrl_autogen.h",
        "dif_flash_ctrl.c",
        "dif_flash_ctrl.h",
    ],
    deps = [
        ":base",
        "//hw/top_earlgrey/ip_autogen/flash_ctrl:flash_ctrl_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "flash_ctrl_unittest",
    srcs = [
        "autogen/dif_flash_ctrl_autogen_unittest.cc",
        "dif_flash_ctrl_unittest.cc",
    ],
    deps = [
        ":flash_ctrl",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "gpio",
    srcs = [
        "autogen/dif_gpio_autogen.c",
        "autogen/dif_gpio_autogen.h",
        "dif_gpio.c",
    ],
    hdrs = [
        "dif_gpio.h",
    ],
    deps = [
        ":base",
        "//hw/ip/gpio/data:gpio_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "gpio_unittest",
    srcs = [
        "autogen/dif_gpio_autogen_unittest.cc",
        "dif_gpio_unittest.cc",
    ],
    deps = [
        ":gpio",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "hmac",
    srcs = [
        "autogen/dif_hmac_autogen.c",
        "autogen/dif_hmac_autogen.h",
        "dif_hmac.c",
    ],
    hdrs = [
        "dif_hmac.h",
    ],
    deps = [
        ":base",
        "//hw/ip/hmac/data:hmac_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "hmac_unittest",
    srcs = [
        "autogen/dif_hmac_autogen_unittest.cc",
        "dif_hmac_unittest.cc",
    ],
    deps = [
        ":hmac",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "i2c",
    srcs = [
        "autogen/dif_i2c_autogen.c",
        "autogen/dif_i2c_autogen.h",
        "dif_i2c.c",
    ],
    hdrs = [
        "dif_i2c.h",
    ],
    deps = [
        ":base",
        "//hw/ip/i2c/data:i2c_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "i2c_unittest",
    srcs = [
        "autogen/dif_i2c_autogen_unittest.cc",
        "dif_i2c_unittest.cc",
    ],
    deps = [
        ":i2c",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "keymgr",
    srcs = [
        "autogen/dif_keymgr_autogen.c",
        "autogen/dif_keymgr_autogen.h",
        "dif_keymgr.c",
    ],
    hdrs = [
        "dif_keymgr.h",
    ],
    deps = [
        ":base",
        "//hw/ip/keymgr/data:keymgr_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "keymgr_unittest",
    srcs = [
        "autogen/dif_keymgr_autogen_unittest.cc",
        "dif_keymgr_unittest.cc",
    ],
    deps = [
        ":keymgr",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "keymgr_dpe",
    srcs = [
        "autogen/dif_keymgr_dpe_autogen.c",
        "autogen/dif_keymgr_dpe_autogen.h",
        "dif_keymgr_dpe.c",
    ],
    hdrs = [
        "dif_keymgr_dpe.h",
    ],
    deps = [
        ":base",
        "//hw/ip/keymgr_dpe/data:keymgr_dpe_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "keymgr_dpe_unittest",
    srcs = [
        "autogen/dif_keymgr_dpe_autogen_unittest.cc",
    ],
    deps = [
        ":keymgr_dpe",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "kmac",
    srcs = [
        "autogen/dif_kmac_autogen.c",
        "autogen/dif_kmac_autogen.h",
        "dif_kmac.c",
    ],
    hdrs = [
        "dif_kmac.h",
    ],
    deps = [
        ":base",
        "//hw/ip/kmac/data:kmac_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "kmac_unittest",
    srcs = [
        "autogen/dif_kmac_autogen_unittest.cc",
        "dif_kmac_unittest.cc",
    ],
    deps = [
        ":kmac",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "lc_ctrl",
    srcs = [
        "autogen/dif_lc_ctrl_autogen.c",
        "autogen/dif_lc_ctrl_autogen.h",
        "dif_lc_ctrl.c",
    ],
    hdrs = [
        "dif_lc_ctrl.h",
    ],
    deps = [
        ":base",
        "//hw/ip/lc_ctrl/data:lc_ctrl_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "lc_ctrl_unittest",
    srcs = [
        "autogen/dif_lc_ctrl_autogen_unittest.cc",
        "dif_lc_ctrl_unittest.cc",
    ],
    deps = [
        ":lc_ctrl",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "mbx",
    srcs = [
        "autogen/dif_mbx_autogen.c",
        "autogen/dif_mbx_autogen.h",
        "dif_mbx.c",
    ],
    hdrs = [
        "dif_mbx.h",
    ],
    deps = [
        ":base",
        "//hw/ip/mbx/data:mbx_c_regs",
        "//sw/device/lib/base:abs_mmio",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "mbx_unittest",
    srcs = [
        "autogen/dif_mbx_autogen_unittest.cc",
        "dif_mbx_unittest.cc",
    ],
    deps = [
        ":mbx",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "otbn",
    srcs = [
        "autogen/dif_otbn_autogen.c",
        "autogen/dif_otbn_autogen.h",
        "dif_otbn.c",
    ],
    hdrs = [
        "dif_otbn.h",
    ],
    deps = [
        ":base",
        "//hw/ip/otbn/data:otbn_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "otbn_unittest",
    srcs = [
        "autogen/dif_otbn_autogen_unittest.cc",
        "dif_otbn_unittest.cc",
    ],
    deps = [
        ":otbn",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "otp_ctrl",
    srcs = [
        "autogen/dif_otp_ctrl_autogen.c",
        "autogen/dif_otp_ctrl_autogen.h",
        "dif_otp_ctrl.c",
    ],
    hdrs = [
        "dif_otp_ctrl.h",
    ],
    deps = [
        ":base",
        "//hw/ip/otp_ctrl/data:otp_ctrl_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "otp_ctrl_unittest",
    srcs = [
        "autogen/dif_otp_ctrl_autogen_unittest.cc",
        "dif_otp_ctrl_unittest.cc",
    ],
    deps = [
        ":otp_ctrl",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "pattgen",
    srcs = [
        "autogen/dif_pattgen_autogen.c",
        "autogen/dif_pattgen_autogen.h",
        "dif_pattgen.c",
    ],
    hdrs = [
        "dif_pattgen.h",
    ],
    deps = [
        ":base",
        "//hw/ip/pattgen/data:pattgen_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "pattgen_unittest",
    srcs = [
        "autogen/dif_pattgen_autogen_unittest.cc",
        "dif_pattgen_unittest.cc",
    ],
    deps = [
        ":pattgen",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "pinmux",
    srcs = [
        "autogen/dif_pinmux_autogen.c",
        "autogen/dif_pinmux_autogen.h",
        "dif_pinmux.c",
    ],
    hdrs = [
        "dif_pinmux.h",
    ],
    deps = [
        ":base",
        "//hw/top_earlgrey/ip/pinmux/data/autogen:pinmux_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
        "//sw/device/lib/runtime:hart",
    ],
)

cc_test(
    name = "pinmux_unittest",
    srcs = [
        "autogen/dif_pinmux_autogen_unittest.cc",
        "dif_pinmux_unittest.cc",
    ],
    deps = [
        ":pinmux",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "pwm",
    srcs = [
        "autogen/dif_pwm_autogen.c",
        "autogen/dif_pwm_autogen.h",
        "dif_pwm.c",
    ],
    hdrs = [
        "dif_pwm.h",
    ],
    deps = [
        ":base",
        "//hw/ip/pwm/data:pwm_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "pwm_unittest",
    srcs = [
        "autogen/dif_pwm_autogen_unittest.cc",
    ],
    deps = [
        ":pwm",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "pwrmgr",
    srcs = [
        "autogen/dif_pwrmgr_autogen.c",
        "autogen/dif_pwrmgr_autogen.h",
        "dif_pwrmgr.c",
    ],
    hdrs = [
        "dif_pwrmgr.h",
    ],
    deps = [
        ":base",
        "//hw/top_earlgrey/ip_autogen/pwrmgr:pwrmgr_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "pwrmgr_unittest",
    srcs = [
        "autogen/dif_pwrmgr_autogen_unittest.cc",
        "dif_pwrmgr_unittest.cc",
    ],
    deps = [
        ":pwrmgr",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "rom_ctrl",
    srcs = [
        "autogen/dif_rom_ctrl_autogen.c",
        "autogen/dif_rom_ctrl_autogen.h",
        "dif_rom_ctrl.c",
    ],
    hdrs = [
        "dif_rom_ctrl.h",
    ],
    deps = [
        ":base",
        "//hw/ip/rom_ctrl/data:rom_ctrl_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "rom_ctrl_unittest",
    srcs = [
        "autogen/dif_rom_ctrl_autogen_unittest.cc",
    ],
    deps = [
        ":rom_ctrl",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "rstmgr_intf",
    srcs = ["autogen/dif_rstmgr_autogen.h"],
    hdrs = ["dif_rstmgr.h"],
    deps = [":base"],
)

cc_library(
    name = "rstmgr",
    srcs = [
        "autogen/dif_rstmgr_autogen.c",
        "dif_rstmgr.c",
    ],
    deps = [
        ":base",
        ":rstmgr_intf",
        "//hw/top_earlgrey/ip_autogen/rstmgr:rstmgr_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "rstmgr_unittest",
    srcs = [
        "autogen/dif_rstmgr_autogen_unittest.cc",
        "dif_rstmgr_unittest.cc",
    ],
    deps = [
        ":rstmgr",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "rv_core_ibex",
    srcs = [
        "autogen/dif_rv_core_ibex_autogen.c",
        "autogen/dif_rv_core_ibex_autogen.h",
        "dif_rv_core_ibex.c",
    ],
    hdrs = [
        "dif_rv_core_ibex.h",
    ],
    deps = [
        ":base",
        "//hw/ip/rv_core_ibex/data:rv_core_ibex_c_regs",
        "//hw/top_earlgrey/sw/autogen:top_earlgrey",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/runtime:hart",
    ],
)

cc_test(
    name = "rv_core_ibex_unittest",
    srcs = [
        "autogen/dif_rv_core_ibex_autogen_unittest.cc",
        "dif_rv_core_ibex_unittest.cc",
    ],
    deps = [
        ":rv_core_ibex",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "rv_dm",
    srcs = [
        "autogen/dif_rv_dm_autogen.c",
        "autogen/dif_rv_dm_autogen.h",
        "dif_rv_dm.c",
    ],
    hdrs = [
        "dif_rv_dm.h",
    ],
    deps = [
        ":base",
        "//hw/ip/rv_dm/data:rv_dm_c_regs",
        "//hw/top_earlgrey/sw/autogen:top_earlgrey",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "rv_dm_unittest",
    srcs = [
        "autogen/dif_rv_dm_autogen_unittest.cc",
        "dif_rv_dm_unittest.cc",
    ],
    deps = [
        ":rv_dm",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "rv_plic",
    srcs = [
        "autogen/dif_rv_plic_autogen.c",
        "autogen/dif_rv_plic_autogen.h",
        "dif_rv_plic.c",
    ],
    hdrs = [
        "dif_rv_plic.h",
    ],
    deps = [
        ":base",
        "//hw/top_earlgrey:rv_plic_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "rv_plic_unittest",
    srcs = [
        "autogen/dif_rv_plic_autogen_unittest.cc",
        "dif_rv_plic_unittest.cc",
    ],
    deps = [
        ":rv_plic",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "rv_timer",
    srcs = [
        "autogen/dif_rv_timer_autogen.c",
        "autogen/dif_rv_timer_autogen.h",
        "dif_rv_timer.c",
    ],
    hdrs = [
        "dif_rv_timer.h",
    ],
    deps = [
        ":base",
        "//hw/ip/rv_timer/data:rv_timer_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:math",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "rv_timer_unittest",
    srcs = [
        "autogen/dif_rv_timer_autogen_unittest.cc",
        "dif_rv_timer_unittest.cc",
    ],
    deps = [
        ":rv_timer",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "spi_device",
    srcs = [
        "autogen/dif_spi_device_autogen.c",
        "autogen/dif_spi_device_autogen.h",
        "dif_spi_device.c",
    ],
    hdrs = [
        "dif_spi_device.h",
    ],
    deps = [
        ":base",
        "//hw/ip/spi_device/data:spi_device_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "spi_device_unittest",
    srcs = [
        "autogen/dif_spi_device_autogen_unittest.cc",
        "dif_spi_device_unittest.cc",
    ],
    deps = [
        ":spi_device",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "spi_host",
    srcs = [
        "autogen/dif_spi_host_autogen.c",
        "autogen/dif_spi_host_autogen.h",
        "dif_spi_host.c",
    ],
    hdrs = [
        "dif_spi_host.h",
    ],
    deps = [
        ":base",
        "//hw/ip/spi_host/data:spi_host_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "spi_host_unittest",
    srcs = [
        "autogen/dif_spi_host_autogen_unittest.cc",
        "dif_spi_host_unittest.cc",
    ],
    deps = [
        ":spi_host",
        ":test_base",
        "//sw/device/lib/base:global_mock",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "sram_ctrl",
    srcs = [
        "autogen/dif_sram_ctrl_autogen.c",
        "autogen/dif_sram_ctrl_autogen.h",
        "dif_sram_ctrl.c",
    ],
    hdrs = [
        "dif_sram_ctrl.h",
    ],
    deps = [
        ":base",
        "//hw/ip/sram_ctrl/data:sram_ctrl_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "sram_ctrl_unittest",
    srcs = [
        "autogen/dif_sram_ctrl_autogen_unittest.cc",
        "dif_sram_ctrl_unittest.cc",
    ],
    deps = [
        ":sram_ctrl",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "sensor_ctrl",
    srcs = [
        "autogen/dif_sensor_ctrl_autogen.c",
        "autogen/dif_sensor_ctrl_autogen.h",
        "dif_sensor_ctrl.c",
    ],
    hdrs = [
        "dif_sensor_ctrl.h",
    ],
    deps = [
        ":base",
        "//hw/top_earlgrey/ip/sensor_ctrl/data:sensor_ctrl_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:mmio",
    ],
)

cc_test(
    name = "sensor_ctrl_unittest",
    srcs = [
        "autogen/dif_sensor_ctrl_autogen_unittest.cc",
        "dif_sensor_ctrl_unittest.cc",
    ],
    deps = [
        ":sensor_ctrl",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "sysrst_ctrl",
    srcs = [
        "autogen/dif_sysrst_ctrl_autogen.c",
        "autogen/dif_sysrst_ctrl_autogen.h",
        "dif_sysrst_ctrl.c",
    ],
    hdrs = [
        "dif_sysrst_ctrl.h",
    ],
    deps = [
        ":base",
        "//hw/ip/sysrst_ctrl/data:sysrst_ctrl_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "sysrst_ctrl_unittest",
    srcs = [
        "autogen/dif_sysrst_ctrl_autogen_unittest.cc",
        "dif_sysrst_ctrl_unittest.cc",
    ],
    deps = [
        ":sysrst_ctrl",
        ":test_base",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "uart",
    srcs = [
        "autogen/dif_uart_autogen.c",
        "autogen/dif_uart_autogen.h",
        "dif_uart.c",
    ],
    hdrs = ["dif_uart.h"],
    deps = [
        ":base",
        "//hw/ip/uart/data:uart_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:math",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "uart_unittest",
    srcs = [
        "autogen/dif_uart_autogen_unittest.cc",
        "dif_uart_unittest.cc",
    ],
    deps = [
        ":test_base",
        ":uart",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "usbdev",
    srcs = [
        "autogen/dif_usbdev_autogen.c",
        "autogen/dif_usbdev_autogen.h",
        "dif_usbdev.c",
    ],
    hdrs = [
        "dif_usbdev.h",
    ],
    deps = [
        ":base",
        "//hw/ip/usbdev/data:usbdev_c_regs",
        "//sw/device/lib/base:bitfield",
        "//sw/device/lib/base:macros",
        "//sw/device/lib/base:memory",
        "//sw/device/lib/base:mmio",
        "//sw/device/lib/base:multibits",
    ],
)

cc_test(
    name = "usbdev_unittest",
    srcs = [
        "autogen/dif_usbdev_autogen_unittest.cc",
        "dif_usbdev_unittest.cc",
    ],
    deps = [
        ":test_base",
        ":usbdev",
        "@googletest//:gtest_main",
    ],
)
